#!/usr/bin/env python3
"""
合并重复分类并统一命名为系列
"""
import os
import sys
import django

# 添加项目路径
sys.path.append(os.path.join(os.path.dirname(__file__), '..', 'backend'))
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'HuaXianGuan.settings')
django.setup()

from apps.flowers.models import FlowerCategory, Flower

def merge_categories():
    """合并重复分类并统一命名"""
    
    # 分类合并映射
    category_mapping = {
        # 玫瑰花相关
        '玫瑰花': '玫瑰花系列',
        '玫瑰花系列': '玫瑰花系列',
        
        # 康乃馨相关  
        '康乃馨': '康乃馨系列',
        '康乃馨系列': '康乃馨系列',
        
        # 百合花相关
        '百合花': '百合花系列', 
        '百合花系列': '百合花系列',
        
        # 其他分类统一加"系列"
        '向日葵': '向日葵系列',
        '郁金香': '郁金香系列',
        '满天星': '满天星系列',
    }
    
    print("开始整理分类数据...")
    
    # 获取所有分类
    categories = FlowerCategory.objects.all()
    print(f"当前分类数量: {categories.count()}")
    
    for category in categories:
        old_name = category.name
        if old_name in category_mapping:
            new_name = category_mapping[old_name]
            
            if old_name != new_name:
                print(f"更新分类: {old_name} -> {new_name}")
                
                # 检查目标分类是否已存在
                target_category = FlowerCategory.objects.filter(name=new_name).first()
                
                if target_category and target_category.id != category.id:
                    # 目标分类已存在，需要合并
                    print(f"  合并到现有分类: {target_category.name} (ID: {target_category.id})")
                    
                    # 将当前分类下的商品转移到目标分类
                    flowers = Flower.objects.filter(category=category)
                    for flower in flowers:
                        print(f"    转移商品: {flower.name}")
                        flower.category = target_category
                        flower.save()
                    
                    # 删除当前分类
                    print(f"  删除重复分类: {old_name}")
                    category.delete()
                    
                else:
                    # 目标分类不存在，直接重命名
                    category.name = new_name
                    category.description = f"精美的{new_name}，适合各种场合"
                    category.save()
                    print(f"  重命名完成: {new_name}")
    
    # 显示最终结果
    final_categories = FlowerCategory.objects.all().order_by('sort_order', 'name')
    print(f"\n整理后的分类列表 (共{final_categories.count()}个):")
    for i, cat in enumerate(final_categories, 1):
        flower_count = Flower.objects.filter(category=cat).count()
        print(f"{i}. {cat.name} - {flower_count}个商品")
    
    print("\n分类整理完成！")

if __name__ == '__main__':
    merge_categories()